home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d4 / 747.arc / 747.BAS next >
BASIC Source File  |  1986-05-03  |  33KB  |  1,060 lines

  1. 1 REM:PROGRAM NAME = JETSET
  2. 2 REM:IFR FLIGHT SIMULATOR (BOEING 747)
  3. 3 REM:CREATED 06/28/81 BY JEAN SZYMANSKI
  4. 4 REM:REVISED 02/25/82 - INSTRUCTIONS IN NOVEMBER 1982 'BYTE MAGAZINE'
  5. 9 REM:SYSTEM "CLOCK OFF"
  6. 10 GOTO 10000
  7. 23 REM:BEGIN CRUISE MODULE HERE
  8. 24 CLS:CLEAR 2000:RANDOMIZE 57.2958
  9. 25 DIM M$(20)
  10. 26 KR=57.2958:XQ=64
  11. 27 RS=1:IF RND(0)<.5 THEN RS=-1
  12. 28 RW=(15-5)*RND(0)+5
  13. 29 RW=RS*RW
  14. 30 REM:SET UP WIND TABLE
  15. 32 DIM WA(10,1)
  16. 34 FOR I=0 TO 7:WA(I,0)=RND(359):NEXT
  17. 36 FOR I=8 TO 10:WA(I,0)=90*RND(0)+225:NEXT
  18. 38 A=0
  19. 40 FOR I=1 TO 10:WA(I,1)=25*RND(0)+A:A=A+25:NEXT
  20. 41 RS$(0)=STRING$(31,"_")
  21. 42 RS$(1)=SPACE$(13)+".   ."+SPACE$(13)
  22. 43 RS$(2)=SPACE$(11)+".       ."
  23. 44 RS$(3)=SPACE$(9)+STRING$(13,"_")
  24. 45 REM:VOR STATION FREQUENCY TABLE
  25. 46 DIM VF(15)
  26. 47 VF(0)=115.9:VF(1)=113.8:VF(2)=112.7
  27. 48 VF(3)=117.7:VF(4)=117.8:VF(5)=112.2
  28. 49 VF(6)=117.4:VF(7)=115.5:VF(8)=116.4
  29. 50 VF(9)=113.6:VF(10)=116.9:VF(11)=117!
  30. 51 VF(12)=112.3:VF(13)=117.9:VF(14)=115.7
  31. 52 VF(15)=112.8
  32. 62 REM:ILS CONSTANTS FOR AIRPORTS
  33. 63 DIM VG(15,1)
  34. 64 VG(0,0)=238:VG(0,1)=28
  35. 66 VG(2,0)=240:VG(2,1)=30
  36. 69 VG(5,0)=90:VG(5,1)=217
  37. 71 VG(7,0)=299:VG(7,1)=164
  38. 72 VG(8,0)=166:VG(8,1)=42
  39. 79 VG(15,0)=341:VG(15,1)=75
  40. 100 REM:VOR STATION COORDIATES TABLE
  41. 101 DIM VP(15,1)
  42. 102 VP(0,0)=40.633:VP(0,1)=73.773
  43. 103 VP(1,0)=40.202:VP(1,1)=74.495
  44. 104 VP(2,0)=42.358:VP(2,1)=70.993
  45. 105 VP(3,0)=41.282:VP(3,1)=70.027
  46. 106 VP(4,0)=42.74301:VP(4,1)=73.802
  47. 107 VP(5,0)=46.412:VP(5,1)=84.315
  48. 108 VP(6,0)=38.35:VP(6,1)=81.77001
  49. 109 VP(7,0)=40.917:VP(7,1)=77.993
  50. 110 VP(8,0)=42.928:VP(8,1)=78.674
  51. 111 VP(9,0)=41.358:VP(9,1)=82.162
  52. 112 VP(10,0)=42.967:VP(10,1)=83.72401
  53. 113 VP(11,0)=44.555:VP(11,1)=88.19501
  54. 114 VP(12,0)=41.547:VP(12,1)=88.318
  55. 115 VP(13,0)=39.495:VP(13,1)=76.97801
  56. 116 VP(14,0)=42.048:VP(14,1)=83.458
  57. 117 VP(15,0)=39.637:VP(15,1)=75.303
  58. 155 DATA FUEL,LBS,%,VHF,MHZ,THRUST,MAX,IDLE,REV
  59. 160 DATA PITCH," +"," -",DEG,FLAPS,UP,DWN,WHEELS,UP,MID,DOWN
  60. 165 DATA COMPASS,AIRSPEED,KTS," VERT",SPEED,FPM
  61. 170 DATA ALTITUDE,FEET,CLOCK
  62. 175 DIM P$(28)
  63. 180 FOR I=0 TO 28:READ P$(I):NEXT
  64. 185 DIM S$(25)
  65. 190 FOR I=1 TO 25:S$(I)=SPACE$(I):NEXT
  66. 192 FOR I=0 TO 9:F(I)=0:NEXT
  67. 195 REM:INIT FLIGHT VARIABLES TO STATE AT LIFTOFF
  68. 196 FU=195480!:FP=63:CC=75:ZS=380:RC=6704:AL=1900
  69. 198 MZ=122:TR=4:FL=1:FA=10:BR=10:WH=10
  70. 200 RA=0:ZS(1)=380:FA(1)=10:CC(1)=75:AL(1)=1900:RP=40
  71. 201 DP(4)=39:DP(5)=52:DP(6)=75:DP(7)=15
  72. 202 L1=39.8667:G1=75.25:LL(1)=L1:GL(1)=G1:LS(1)=L1:GS(1)=G1
  73. 203 VO(1)=0:VO$(1)="OUT ":VO(3)=0:VO(4)=999.9
  74. 204 GX(0)=0:GY(0)=0
  75. 205 XO=36481!:YO=0
  76. 220 TV$=TIME$:GOSUB 7050:TL=TD
  77. 221 TW(1)=TD
  78. 222 GOSUB 335
  79. 224 GOSUB 600
  80. 300 K$=INKEY$:IF LEN(K$)=0 GOTO 304
  81. 302 GOSUB 800
  82. 304 GOTO 1000
  83. 335 REM:DISPLAY PANEL (HEADERS ONLY)
  84. 340 LOCATE 1,4:PRINT P$(0);S$(4);P$(5);S$(3);P$(9);S$(3);S$(6);S$(3);P$(20)
  85. 341 LOCATE 10,55:PRINT P$(13);S$(3);P$(16)
  86. 342 LOCATE 11,57:PRINT P$(14);S$(6);P$(14)
  87. 343 LOCATE 13,57:PRINT P$(15);S$(5);P$(15)
  88. 345 LOCATE 2,14:PRINT P$(6);S$(6);P$(10);S$(6)
  89. 350 LOCATE 2,69:PRINT P$(28)
  90. 355 LOCATE 3,2:PRINT P$(1);S$(4);P$(2);S$(21);S$(3);S$(13);P$(23)
  91. 360 LOCATE 4,23:PRINT P$(11);S$(13);P$(21);S$(2);P$(24);S$(2);P$(26)
  92. 365 LOCATE 5,1:PRINT P$(3)
  93. 370 LOCATE 6,40:PRINT P$(22);S$(6);P$(25);S$(5);P$(27)
  94. 375 LOCATE 7,1:PRINT P$(4);S$(10);P$(7);S$(3);P$(12);S$(7)
  95. 380 LOCATE 8,14:PRINT P$(8)
  96. 381 LOCATE 4,69:PRINT"VLF OMEGA":LOCATE 5,66:PRINT"LAT"
  97. 382 LOCATE 6,65:PRINT"LONG"
  98. 383 LOCATE 7,33:PRINT". . . . : . . . .":LOCATE 9,40:PRINT"RUD"
  99. 384 LOCATE 10,33:PRINT CHR$(201);STRING$(15,205);CHR$(187)
  100. 386 FOR X = 32 TO 48 STEP 16
  101. 387 FOR Y = 10 TO 22
  102. 388 LOCATE (Y+1),(X+1):PRINT CHR$(186);
  103. 389 NEXT Y
  104. 390 NEXT X
  105. 391 LOCATE 24,33:PRINT CHR$(200);STRING$(15,205);CHR$(188);
  106. 392 LOCATE 11,40:PRINT"VOR":LOCATE 12,45:PRINT"MHZ"
  107. 393 LOCATE 15,39:PRINT"RANGE"
  108. 394 LOCATE 17,36:PRINT".....:....."
  109. 395 LOCATE 20,39:PRINT"RADIAL"
  110. 396 LOCATE 22,40:PRINT"DME":LOCATE 23,45:PRINT"NM";
  111. 397 FOR Y = 1 TO 7:LOCATE (Y+1),13:PRINT CHR$(195):NEXT
  112. 398 FOR Y = 1 TO 3:LOCATE (Y+1),22:PRINT CHR$(195):NEXT
  113. 400 LOCATE 15,1:PRINT CHR$(201);STRING$(15,205);CHR$(187)
  114. 402 FOR X = 0 TO 16 STEP 16
  115. 404 FOR Y = 15 TO 21
  116. 406 LOCATE (Y+1),(X+1):PRINT CHR$(186);
  117. 408 NEXT Y
  118. 410 NEXT X
  119. 412 LOCATE 23,1:PRINT CHR$(200);STRING$(15,205);CHR$(188);
  120. 414 LOCATE 14,8:PRINT"ILS"
  121. 416 LOCATE 18,20:PRINT"MARKER":LOCATE 19,21:PRINT">  <"
  122. 418 GX(1)=0:GY(1)=0
  123. 420 GOSUB 2100
  124. 422 COLOR 0,7:LOCATE 11,8:PRINT"     "
  125. 424 COLOR 7,0:LOCATE 10,5:PRINT"RADAR ALT";SPC(6);"STALL"
  126. 425 LOCATE 11,19:PRINT">     <"
  127. 599 RETURN
  128. 600 REM:DISPLAY INSTRUMENT READINGS
  129. 601 GOTO 720
  130. 605 YP=1:XP=0:F$="######":V1=FU:GOSUB 9000
  131. 606 LOCATE 1,67:COLOR 0,7:PRINT TIME$:COLOR 7,0
  132. 610 YP=1:XP=7:F$="###":V1=FP:GOSUB 9000
  133. 615 YP=1:XP=39:V1=CC:GOSUB 9000
  134. 620 YP=4:XP=39:V1=ZS:GOSUB 9000
  135. 625 YP=4:XP=46:F$="######":V1=RC:GOSUB 9000
  136. 630 YP=4:XP=55:F$="##,###":V1=AL:GOSUB 9000
  137. 635 YP=5:XP=0:F$="###":V1=MZ:GOSUB 9000
  138. 636 IF F(2)=1 THEN YP=10:XP=6:F$="#####":V1=AL:GOSUB 9000
  139. 640 REM:DISPLAY THRUST
  140. 650 FOR I = 1 TO 7
  141. 651 LOCATE (I+1),12:PRINT" ";CHR$(195)
  142. 652 NEXT
  143. 655 LOCATE (TR+1),12:PRINT">";
  144. 660 REM:DISPLAY FLAPS
  145. 665 FOR I = 1 TO 3:LOCATE (I+1),21:PRINT" ";CHR$(195):NEXT
  146. 670 LOCATE (FL+1),21:PRINT">"
  147. 674 F$="+###"
  148. 675 YP=5:XP=20:V1=FA:GOSUB 9000
  149. 676 IF F(6)=0 THEN SX=25:COLOR 7,0:GOTO 679
  150. 677 IF SX=25 THEN SX=26:COLOR 0,7:GOTO 679
  151. 678 SX=25
  152. 679 IF F(7)=0 THEN LOCATE 11,20:PRINT"     ":COLOR 7,0
  153. 680 REM:DISPLAY BRAKES
  154. 690 FOR I=10 TO 12:LOCATE (I+1),55:PRINT" ";CHR$(195):NEXT
  155. 695 LOCATE (BR+1),55:PRINT">"
  156. 700 REM:WHEELS
  157. 705 FOR I=10 TO 12:LOCATE (I+1),63:PRINT" ";CHR$(195):NEXT
  158. 710 LOCATE (WH+1),63:PRINT">"
  159. 711 IF F(2)=1 GOTO 723
  160. 712 REM:DISPLAY LAT/LONGDITUDE
  161. 713 YP=4:XP=69:F$="###":V1=DP(4):GOSUB 9000
  162. 714 YP=4:XP=73:F$="##.#":V1=DP(5):GOSUB 9000
  163. 715 YP=5:XP=69:F$="###":V1=DP(6):GOSUB 9000
  164. 716 YP=5:XP=73:F$="##.#":V1=DP(7):GOSUB 9000
  165. 717 LOCATE 5,79:PRINT"N"
  166. 718 LOCATE 6,79:PRINT"W"
  167. 719 GOTO 723
  168. 720 REM:DISPLAY RUDDER POSITION
  169. 721 LOCATE 8,33:COLOR 0,7:PRINT S$(17)
  170. 722 LOCATE 8,(RP+1):PRINT CHR$(186):COLOR 7,0:GOTO 605
  171. 723 IF F(2)=1 THEN RETURN
  172. 724 REM:DISPLAY VOR VALUES
  173. 725 YP=11:XP=38:F$="###.#":V1=VO(1):GOSUB 9000
  174. 726 COLOR 0,7:LOCATE 14,40:PRINT VO$(1):COLOR 7,0
  175. 727 YP=18:XP=39:F$="###":V1=VO(3):GOSUB 9000
  176. 728 YP=22:XP=38:F$="###.#":V1=VO(4):GOSUB 9000
  177. 729 COLOR 0,7:LOCATE 18,35:PRINT S$(13):COLOR 7,0
  178. 730 IF VO$(1)="OUT " GOTO 732
  179. 731 LOCATE 18,(VO(2)+1):PRINT CHR$(24)
  180. 732 RETURN
  181. 800 REM:KEY POLL SUBROUT
  182. 805 IF K$="F" OR K$="S" THEN KK=1:GOTO 850
  183. 810 IF K$="," OR K$="." THEN KK=2:GOTO 850
  184. 811 IF K$="/" THEN RA=0:GOTO 855
  185. 825 IF K$="U" OR K$="D" THEN KK=3:GOTO 850
  186. 830 IF K$="W" THEN KK=4:GOTO 850
  187. 835 IF K$="V" THEN KK=5:GOTO 850
  188. 836 IF K$="R" THEN KK=6:GOTO 850
  189. 837 IF K$="L" THEN KK=7:GOTO 850
  190. 838 IF K$="A" THEN KK=8:GOTO 850
  191. 839 IF K$="Q" THEN KK=9:GOTO 850
  192. 840 IF K$="M" THEN KK=10:GOTO 850
  193. 841 IF K$="C" THEN KK=11:GOTO 850
  194. 850 ON KK GOSUB 900,908,914,928,931,935,940,944,946,950,953
  195. 855 RETURN
  196. 900 REM:THRUST KEY
  197. 902 IF K$="F" THEN TR=TR-1 ELSE TR=TR+1
  198. 904 IF TR<1 THEN TR=1:RETURN
  199. 908 REM:RUDDER KEYS
  200. 909 IF K$="," GOTO 912 ELSE RA=RA+1
  201. 910 IF RA>4 THEN RA=4
  202. 911 RETURN
  203. 912 RA=RA-1:IF RA<-4 THEN RA=-4
  204. 913 RETURN
  205. 914 REM:ELEVATOR KEYS
  206. 915 J=5:IF BR=12 THEN J=1
  207. 916 IF K$="U" THEN FA=FA+J ELSE FA=FA-J
  208. 918 IF FA>40 THEN FA=40
  209. 920 IF FA<-40 THEN FA=-40
  210. 922 IF FA>0 THEN FL=1:RETURN
  211. 924 IF FA=0 THEN FL=2:RETURN
  212. 926 FL=3:RETURN
  213. 928 REM:WHEELS KEY
  214. 929 IF WH=10 THEN WH=12:RETURN
  215. 930 IF WH=12 THEN WH=10:RETURN
  216. 931 REM:SET VOR FREQ
  217. 932 LOCATE 15,56
  218. 933 LINE INPUT"VOR FREQ ";VX$:VO(1)=VAL(VX$)
  219. 934 LOCATE 15,56:PRINT SPC(16):RETURN
  220. 935 REM:SET VOR RADIAL
  221. 936 LOCATE 15,56
  222. 937 LINE INPUT"VOR RADIAL ";VX$:VO(3)=VAL(VX$)
  223. 938 LOCATE 15,56:PRINT SPC(14):RETURN
  224. 940 REM:FLAPS KEY
  225. 941 IF BR=10 THEN BR=12:RETURN
  226. 942 IF BR=12 THEN BR=10:RETURN
  227. 944 REM:AUTO - OBS KEY
  228. 945 F(3)=1:RETURN
  229. 946 REM:REVERSE THRUST KEY
  230. 947 IF F(7)=1 THEN TR=7
  231. 948 RETURN
  232. 950 REM:MISSED APPROACH KEY
  233. 951 IF F(2)=1 THEN F(5)=1
  234. 952 RETURN
  235. 953 REM:FLARE KEY
  236. 954 IF F(2)=0 THEN FA=0:FL=2:RETURN
  237. 955 FA=1:FL=1:RETURN
  238. 1000 REM:SITUATION UPDATE ROUTINE
  239. 1002 TV$=TIME$:GOSUB 7050:TJ=TD-TL:TL=TD
  240. 1010 GOSUB 1100
  241. 1012 GOSUB 1130
  242. 1013 GOSUB 1145
  243. 1014 IF TR=7 THEN GOSUB 1800 ELSE GOSUB 1124
  244. 1016 GOSUB 1106
  245. 1018 GOSUB 1114
  246. 1019 IF F(2)=1 GOTO 1600
  247. 1020 GOSUB 1400
  248. 1021 GOSUB 1500
  249. 1030 IF AL<=0 THEN AF=1:GOTO 3000
  250. 1031 IF F(2)=0 GOTO 1099
  251. 1032 IF AL>0 GOTO 1068
  252. 1033 IF F(7)=1 GOTO 1090
  253. 1034 F(7)=1
  254. 1036 TY=YN
  255. 1038 TX=XN-750
  256. 1042 IF FA>1 THEN AF=2:GOTO 3000
  257. 1044 IF FA<0 THEN AF=3:GOTO 3000
  258. 1046 IF F(6)=0 GOTO 1062
  259. 1048 IF AX>100 THEN AF=4:GOTO 3000
  260. 1050 IF AX>80 THEN AF=5:GOTO 3000
  261. 1052 IF WH=10 THEN AF=6:GOTO 3000
  262. 1054 IF TX>0 THEN AF=7:GOTO 3000
  263. 1056 IF TX<-10500 THEN AF=7:GOTO 3000
  264. 1058 IF ABS(TY)>100 THEN AF=7:GOTO 3000
  265. 1060 GOTO 1099
  266. 1062 AF=8:GOTO 3000
  267. 1068 IF F(5)=1 GOTO 1082
  268. 1070 IF FA>0 GOTO 1076
  269. 1072 IF FA<0 THEN F(6)=0
  270. 1074 GOTO 1099
  271. 1076 IF F(6)=0 THEN AX=AL:F(6)=1
  272. 1077 IF TR=6 GOTO 1080
  273. 1078 IF FA<2 THEN RC=-1800:GOTO 1099
  274. 1079 FA=2:FL=1:RC=-1800:GOTO 1099
  275. 1080 FA=1:FL=1:RC=-300:GOTO 1099
  276. 1082 IF AL<20 THEN AF=9:GOTO 3000
  277. 1084 TR=3:FA=0:FL=2
  278. 1086 AF=10:GOTO 3000
  279. 1090 IF XN<-9750 OR ABS(YN)>100 GOTO 1094
  280. 1091 IF ZS>0 GOTO 1099
  281. 1092 AF=0:GOTO 3000
  282. 1094 AF=9:GOTO 3000
  283. 1099 GOTO 1700
  284. 1100 REM:UPDATE FUEL
  285. 1102 FU=FU-(14-TR)*TJ:IF FU<0 THEN FU=0
  286. 1104 FP=FU/3120:RETURN
  287. 1106 IF F(7)=1 THEN RC=0:RETURN
  288. 1107 IF F(6)=1 THEN RETURN
  289. 1108 RC=ZS*SIN(ABS(FA/KR))*101.6
  290. 1110 IF FA<0 THEN RC=-1*RC
  291. 1112 RETURN
  292. 1114 REM:UPDATE ALTITUDE
  293. 1115 IF F(7)=1 THEN RETURN
  294. 1116 AL=AL+TJ*RC/60
  295. 1118 IF AL<0 THEN AL=0:RETURN
  296. 1120 IF AL>45000! THEN AL=45000!
  297. 1122 RETURN
  298. 1124 REM:UPDATE AIRSPEED
  299. 1125 ZS=800-100*TR
  300. 1126 ZS=ZS-2*FA
  301. 1127 IF BR=10 THEN RETURN
  302. 1128 ZS=ZS/3+20:RETURN
  303. 1130 IF F(5)=1 GOTO 1132
  304. 1131 IF F(2)=1 GOTO 1142
  305. 1132 IF RA=0 THEN RT=0:RETURN
  306. 1133 IF RA<0 THEN J=-1 ELSE J=1
  307. 1134 RA=ABS(RA):IF RA=1 THEN RT=1:GOTO 1137
  308. 1135 IF RA=2 THEN RT=10:GOTO 1137
  309. 1136 IF RA=3 THEN RT=20 ELSE RT=30
  310. 1137 RT=J*RT:RA=J*RA
  311. 1138 CC=CC+RT
  312. 1139 IF CC=>360 THEN CC=CC-360:RETURN
  313. 1140 IF CC<0 THEN CC=360+CC
  314. 1141 RETURN
  315. 1142 IF RA=0 THEN RETURN
  316. 1143 IF RA<0 THEN CC=CC-1 ELSE CC=CC+1
  317. 1144 RA=0:GOTO 1139
  318. 1145 REM:UPDATE RUDDER POSITION VALUE
  319. 1146 RP=40+RA+RA:RETURN
  320. 1200 REM:COMPUTES DIST & BEARING TO A KNOWN POINT LOCATION
  321. 1202 VL=ABS(LB-LC):BL(5)=-1:IF LB=>LC THEN BL(5)=1
  322. 1204 VG=ABS(GB-GC):BL(4)=1:IF GB=>GC THEN BL(4)=-1
  323. 1206 LA=LC:GOSUB 2400
  324. 1208 M1=MP
  325. 1210 LA=LB:GOSUB 2400
  326. 1212 M2=MP:DM=ABS(M2-M1)
  327. 1214 IF DM=0 GOTO 1220
  328. 1216 QO=VG/(DM/60):IF QO>114.59 GOTO 1220
  329. 1218 CA=KR*ATN(QO):DR=VL*(1/COS(CA/KR)):GOTO 1222
  330. 1220 CA=90:DR=VG*COS(LC/KR)
  331. 1222 DR=DR*60:IF BL(5)=-1 GOTO 1226
  332. 1224 IF BL(4)=1 THEN CR=CA ELSE CR=360-CA
  333. 1225 RETURN
  334. 1226 IF BL(4)=1 THEN CR=180-CA ELSE CR=180+CA
  335. 1228 RETURN
  336. 1250 REM:GET WIND VECTOR FOR CURRENT ALTITUDE
  337. 1252 I=FIX(AL/4000):IF I=>10 THEN I=10
  338. 1254 WD=WA(I,0):WV=WA(I,1)
  339. 1256 RETURN
  340. 1260 REM:SOLVES WIND TRIANGLE
  341. 1262 A=CC:L=AJ:GOSUB 1300
  342. 1264 MX=LX:MY=LY
  343. 1266 GOSUB 1250
  344. 1268 A=WD+180:IF A=>360 THEN A=A-360
  345. 1270 L=WV:GOSUB 1300
  346. 1272 MX=MX+LX:MY=MY+LY:GOSUB 1350
  347. 1274 TK=MA:GS=VZ
  348. 1276 RETURN
  349. 1300 REM:RESOLVES A VECTOR INTO RECT. COORDS
  350. 1302 IF A<=90 THEN Q=1:B=90-A:GOTO 1310
  351. 1304 IF A<=180 THEN Q=2:B=A-90:GOTO 1310
  352. 1306 IF A<=270 THEN Q=3:B=270-A:GOTO 1310
  353. 1308 Q=4:B=A-270
  354. 1310 LX=L*COS(B/KR):LY=L*SIN(B/KR)
  355. 1312 IF Q=1 THEN RETURN
  356. 1314 IF Q=2 THEN LY=-1*LY:RETURN
  357. 1316 IF Q=3 THEN LX=-1*LX:LY=-1*LY:RETURN
  358. 1318 LX=-1*LX
  359. 1320 RETURN
  360. 1350 REM:COMPOSES X,Y COMPONENTS INTO A POLAR VECTOR
  361. 1352 VZ=SQR(MX^2+MY^2)
  362. 1354 IF MX<=0 GOTO 1358
  363. 1356 IF MY<=0 THEN Q=2 ELSE Q=1
  364. 1357 GOTO 1360
  365. 1358 IF MY<=0 THEN Q=3 ELSE Q=4
  366. 1360 IF MX=0 THEN MA=90:GOTO 1366
  367. 1362 MQ=ABS(MY/MX)
  368. 1364 MA=ATN(MQ)*KR
  369. 1366 IF Q=1 THEN MA=90-MA:RETURN
  370. 1368 IF Q=2 THEN MA=90+MA:RETURN
  371. 1370 IF Q=3 THEN MA=270-MA:RETURN
  372. 1372 MA=270+MA
  373. 1374 RETURN
  374. 1400 REM:GET POSITION FOR OMEGA DISPLAY
  375. 1402 ZS(2)=ZS:FA(2)=FA:CC(2)=CC:AL(2)=AL
  376. 1404 ZS=ZS(1):FA=FA(1):CC=CC(1):AL=AL(1)
  377. 1406 IF ZS(2)<>ZS OR FA(2)<>FA GOTO 1440
  378. 1408 IF CC(2)<>CC OR AL(2)<>AL GOTO 1440
  379. 1410 F(0)=1:IF TD<TW(1)+60 GOTO 1442
  380. 1412 AJ=ZS*COS(ABS(FA)/KR)
  381. 1414 GOSUB 1260
  382. 1416 DN=GS*(TD-TW(1))/3600
  383. 1418 CN=TK:L1=LL(1):G1=GL(1)
  384. 1420 GOSUB 2000
  385. 1422 F(0)=0:TW(1)=TD:LL(1)=L2:GL(1)=G2
  386. 1424 LS(1)=L2:GS(1)=G2
  387. 1426 FOR J=4 TO 7:DP(J)=CP(J):NEXT
  388. 1428 ZS(1)=ZS(2):FA(1)=FA(2):CC(1)=CC(2):AL(1)=AL(2)
  389. 1430 ZS=ZS(2):FA=FA(2):CC=CC(2):AL=AL(2)
  390. 1432 RETURN
  391. 1440 TW(1)=TD:F(0)=0
  392. 1442 AJ=ZS*COS(ABS(FA)/KR)
  393. 1444 GOSUB 1260
  394. 1446 DN=GS*TJ/3600
  395. 1448 CN=TK:L1=LS(1):G1=GS(1)
  396. 1450 GOSUB 2000
  397. 1452 LS(1)=L2:GS(1)=G2
  398. 1454 IF F(0)=1 GOTO 1458
  399. 1456 LL(1)=L2:GL(1)=G2
  400. 1458 GOTO 1426
  401. 1500 REM:VOR ROUTINE
  402. 1502 IF VO(1)=0 GOTO 1540
  403. 1504 FOR J=0 TO 15:IF VO(1)=VF(J) GOTO 1506
  404. 1505 NEXT:GOTO 1540
  405. 1506 LC=VP(J,0):GC=VP(J,1)
  406. 1508 LB=L2:GB=G2
  407. 1509 AR=VG(J,0):LL=VG(J,1)
  408. 1510 LO=360-LL
  409. 1512 GOSUB 1200
  410. 1514 IF DR>300 GOTO 1540
  411. 1516 IF CR=>360 THEN CR=CR-360
  412. 1517 GOTO 1578
  413. 1518 VO$(1)="FROM"
  414. 1519 VO(5)=CR-VO(3):IF VO(5)<=180 GOTO 1522
  415. 1520 VO(5)=VO(5)-360:GOTO 1524
  416. 1522 IF VO(5)<-180 THEN VO(5)=VO(5)+360
  417. 1524 IF ABS(VO(5))>90 THEN I1=VO(3):GOTO 1536
  418. 1526 IF VO$(1)="FROM" THEN I=-1 ELSE I=1
  419. 1527 IF I=1 THEN VO(3)=I1
  420. 1528 VO(2)=40+I*INT(VO(5)):VO(4)=DR
  421. 1530 IF VO(2)<35 THEN VO(2)=34
  422. 1532 IF VO(2)>45 THEN VO(2)=46
  423. 1534 GOTO 1560
  424. 1536 VO$(1)=" TO ":VO(3)=VO(3)+180:IF VO(3)=>360 THEN VO(3)=VO(3)-360
  425. 1538 GOTO 1519
  426. 1540 VO$(1)="OUT ":VO(4)=999.9:F(3)=0:RETURN
  427. 1546 IF DR>12 OR DR<10 THEN MK=0:GOTO 1518
  428. 1548 IF AL>4000 THEN MK=0:GOTO 1518
  429. 1550 IF F(1) =1 THEN J=9 ELSE J=2.5
  430. 1552 IF CR>AR+J OR CR<AR-J THEN MK=0:GOTO 1518
  431. 1554 F(1)=1:MK=1:GOTO 1518
  432. 1560 LOCATE 19,22:IF MK=1 THEN COLOR 0,7:PRINT"  ":COLOR 7,0:ELSE PRINT"  "
  433. 1566 IF MK=0 THEN F(1)=0:RETURN
  434. 1570 IF CC>LL+1 OR CC<LL-1 THEN RETURN
  435. 1572 IF RA<>0 THEN RETURN
  436. 1574 F(1)=0:F(2)=1
  437. 1576 GOTO 1540
  438. 1578 IF F(3)=1 THEN VO(3)=CR:F(3)=0
  439. 1580 GOTO 1546
  440. 1600 REM:ILS ROUTINE
  441. 1602 ZN=AL:TH=2.82471:MK=1
  442. 1603 DW=1.69*RW*TJ:IF F(7)=1 THEN DW=0
  443. 1604 IF F(7)=1 THEN CC=LL:RA=0
  444. 1606 CJ=CC
  445. 1608 IF CJ>180 THEN CJ=360-CJ:CJ=-1*CJ
  446. 1610 HA=LO+CJ
  447. 1612 DC=360-HA:TS=1:IF HA<180 THEN DC=HA:TS=-1
  448. 1614 IF DC<0 THEN DC=-1*DC:TS=-1*TS
  449. 1616 TL$="W":IF TS=1 THEN TL$="E"
  450. 1618 DD=1.69*ZS*TJ
  451. 1620 DY=DD*SIN(DC/KR):DX=DD*COS(DC/KR)
  452. 1622 XN=XO-DX:IF TL$="E" THEN DY=-1*DY
  453. 1624 YN=YO+DY+DW
  454. 1626 LM=KR*ATN(AL/XN)
  455. 1628 BE=KR*ATN(ABS(YN)/ABS(XN)):IF BE>2.5 THEN MK=0
  456. 1630 J=(LM-TH)/.25:J=FIX(J)
  457. 1632 IF J>3 THEN J=3
  458. 1633 IF J<-3 THEN J=-3
  459. 1636 BE=BE/.25:BE=FIX(BE)
  460. 1637 IF BE<-7 THEN BE=-7
  461. 1638 IF BE>7 THEN BE=7
  462. 1639 IF YN>0 THEN BE=-1*BE
  463. 1640 IF MK=0 GOTO 1648
  464. 1642 IF XN>34960! AND XN<38000! GOTO 1648
  465. 1644 IF XN>2534 AND XN<5574 GOTO 1648
  466. 1646 MK=0
  467. 1648 GX(1)=BE:GY(1)=J
  468. 1650 GOSUB 2100
  469. 1654 LOCATE 19,22:IF MK=1 THEN COLOR 0,7:PRINT"  ":COLOR 7,0:ELSE PRINT"  "
  470. 1662 XO=XN:YO=YN
  471. 1664 IF F8=1 GOTO 1676
  472. 1666 IF XN>12000 GOTO 1676
  473. 1668 F8=1
  474. 1670 FOR I=0 TO 3
  475. 1672 LOCATE (14+I),50:PRINT RS$(I)
  476. 1674 NEXT I
  477. 1676 IF F8=0 GOTO 1699
  478. 1678 LOCATE 18,(XQ+1):PRINT" "
  479. 1680 YU=FIX(YN/16.7):XC=64+YU
  480. 1682 IF XC<49 THEN XC=49
  481. 1684 IF XC>79 THEN XC=79
  482. 1686 LOCATE 18,(XC+1):PRINT CHR$(24)
  483. 1688 XQ=XC
  484. 1699 GOTO 1031
  485. 1700 GOTO 1799
  486. 1799 GOTO 224
  487. 1800 REM:REVERSE THRUST APPLIED
  488. 1802 IF F(4)=1 GOTO 1806
  489. 1804 VO=ZS*1.152*1.47:F(4)=1
  490. 1806 V=VO-(3.23636)*TJ
  491. 1808 IF V<=0 THEN V=0
  492. 1810 VO=V
  493. 1812 ZS=V/(1.152*1.47)
  494. 1814 RETURN
  495. 2000 REM:COMPUTES NEW POSITION
  496. 2004 IF CN=0 THEN CA=0:LB(5)=1:LB(6)=1:GOTO 2014
  497. 2006 IF CN>0 AND CN<=90 THEN CA=CN:LB(5)=1:LB(6)=1:GOTO 2014
  498. 2008 IF CN>90 AND CN<=180 THEN CA=180-CN:LB(5)=-1:LB(6)=1:GOTO 2014
  499. 2010 IF CN>180 AND CN<=270 THEN CA=CN-180:LB(5)=-1:LB(6)=-1:GOTO 2014
  500. 2012 CA=360-CN:LB(5)=1:LB(6)=-1
  501. 2014 IF CA>89.5 GOTO 2034
  502. 2016 DL=DN*COS(CA/KR):DL=DL/60:LB(3)=LB(5)
  503. 2018 IF LB(3)=1 THEN L2=L1+DL:GOTO 2024
  504. 2020 L2=ABS(L1-DL)
  505. 2024 LA=L1:GOSUB 2400
  506. 2026 M1=MP
  507. 2028 LA=L2:GOSUB 2400
  508. 2030 M2=MP
  509. 2032 DM=ABS(M1-M2):DG=DM*TAN(CA/KR):GOTO 2036
  510. 2034 L2=L1:DG=DN/COS(L1/KR)
  511. 2036 DG=DG/60:LB(4)=LB(6)
  512. 2038 IF LB(4)=-1 GOTO 2046
  513. 2040 G2=ABS(G1-DG)
  514. 2044 GOTO 2050
  515. 2046 G2=G1+DG
  516. 2050 CP(4)=FIX(L2):CP(5)=(L2-CP(4))*60
  517. 2052 CP(6)=FIX(G2):CP(7)=(G2-CP(6))*60
  518. 2054 RETURN
  519. 2100 REM:PLOT GLIDE SLOPE CROSSHAIRS
  520. 2101 IF XO<=750 THEN RETURN
  521. 2102 X0=8+GX(0):X1=8+GX(1):Y0=18+GY(0):Y1=18+GY(1)
  522. 2104 FOR Y=15 TO 21:LOCATE (Y+1),(X0+1):PRINT" ":NEXT
  523. 2106 LOCATE (Y0+1),2:PRINT STRING$(15,32)
  524. 2108 FOR Y=15 TO 21:LOCATE (Y+1),(X1+1):PRINT CHR$(197):NEXT
  525. 2110 LOCATE (Y1+1),2:PRINT STRING$(15,197)
  526. 2112 LOCATE (Y1+1),(X1+1):PRINT CHR$(43)
  527. 2114 LOCATE 19,9:PRINT"O"
  528. 2116 GX(0)=GX(1):GY(0)=GY(1)
  529. 2118 RETURN
  530. 2400 REM:COMPUTES MERIDIONAL PARTS, MP
  531. 2404 KM(0)=7915.704468#
  532. 2406 KM(1)=23.268932#
  533. 2408 KM(2)=.0525
  534. 2410 KM(3)=.000213
  535. 2414 IF LA=0 THEN LA=0+1/60
  536. 2416 IF LA>(89+59/60) THEN LA=89+59/60
  537. 2418 S1=SIN(LA/KR)
  538. 2420 S2=S1*S1:S3=S1*S2
  539. 2422 TM(0)=TAN((45+LA/2)/KR)
  540. 2424 TM(0)=KM(0)*LOG(TM(0))/LOG(10)
  541. 2426 TM(1)=KM(1)*S1
  542. 2428 TM(2)=KM(2)*S3
  543. 2430 TM(3)=KM(3)*S2*S3
  544. 2432 MP=TM(0)-TM(1)-TM(2)-TM(3)
  545. 2436 RETURN
  546. 3000 REM:ABORT ROUTINES
  547. 3002 M$(1)="---------- A CRASH HAS OCCURED ----------"
  548. 3004 M$(2)="YOU ACCIDENTLY STALLED THE AIRCRAFT DURING FINAL APPROACH."
  549. 3006 M$(3)="THE STALL OCCURRED AT AN ALTITUDE OF"
  550. 3008 M$(4)="THE AIRCRAFT STRUCK THE GROUND IN A NOSE-HIGH ATTITUDE."
  551. 3010 M$(5)="THE IMPACT RUPTURED THE TAIL SECTION OF THE FUSELAGE."
  552. 3012 M$(6)="---- LOCATION OF CRASH ----"
  553. 3013 M$(7)="---- LANDING POSITION ----"
  554. 3016 M$(8)="    PITCH ANGLE="
  555. 3018 M$(9)="    AIRSPEED="
  556. 3020 M$(10)="YOU FLARED AT TOO HIGH AN ALTITUDE DURING FINAL APPROACH."
  557. 3022 M$(11)="THE RESULTING STALL OCCURED AT AN ALTITUDE OF"
  558. 3024 M$(12)="THE IMPACT RUPTURED THE "
  559. 3026 M$(13)="YOU FORGOT TO LOWER THE LANDING GEAR."
  560. 3028 M$(14)="YOU FAILED TO TOUCH DOWN INSIDE THE RUNWAY."
  561. 3030 M$(15)="---------- AN IMPROPER LANDING WAS MADE ----------"
  562. 3032 M$(16)="NO DAMAGE OR INJURIES OCCURRED.
  563. 3033 RL=0:IF TX>100 THEN RL=1
  564. 3034 RW=0:IF ABS(TY)>100 THEN RW=1
  565. 3040 N$(2)="FEET INSIDE OF RUNWAY"
  566. 3041 IF TX=>0 THEN N$(2)="FEET SHORT OF RUNWAY"
  567. 3042 N$(3)="FEET TO LEFT OF RUNWAY CENERLINE"
  568. 3043 IF TY=>0 THEN N$(3)="FEET TO RIGHT OF RUNWAY CENTERLINE"
  569. 3044 RX=FIX(TX):RX=ABS(RX)
  570. 3045 RY=FIX(TY):RY=ABS(RY)
  571. 3050 IF AF=0 GOTO 3600
  572. 3055 ZS=INT(AX):FA=INT(FA):ZS=INT(ZS)
  573. 3060 ON AF GOTO 3100,3150,3200,3250,3300,3350,3400,3450,3500,3550
  574. 3100 GOSUB 3700
  575. 3101 YP=4:XP=55:F$="##,###":V1=AL:GOSUB 9000
  576. 3102 LOCATE 16,1:PRINT M$(1)
  577. 3104 PRINT"YOU FLEW INTO THE GROUND."
  578. 3106 PRINT"THE INSTRUMENT READINGS AT TIME OF THE CRASH ARE SHOWN AS ABOVE."
  579. 3108 END
  580. 3150 CLS
  581. 3152 PRINT M$(1)
  582. 3154 PRINT M$(2)
  583. 3156 PRINT M$(3);AX;"FEET."
  584. 3158 PRINT M$(4)
  585. 3160 PRINT M$(5)
  586. 3162 N$(1)=M$(6)
  587. 3164 GOSUB 3800
  588. 3166 END
  589. 3200 CLS
  590. 3202 PRINT M$(1)
  591. 3204 PRINT"YOU FLEW INTO THE GROUND DURING FINAL APPROACH."
  592. 3206 PRINT"AT THE TIME OF THE CRASH THE AIRCRAFT PROFILE WAS AS FOLLOWS :"
  593. 3208 PRINT M$(8);FA;"DEGREES"
  594. 3210 PRINT M$(9);ZS
  595. 3212 N$(1)=M$(6)
  596. 3214 GOSUB 3800
  597. 3216 END
  598. 3250 CLS
  599. 3252 PRINT M$(1)
  600. 3254 PRINT M$(10)
  601. 3256 PRINT M$(11);AX;"FEET."
  602. 3258 PRINT M$(12)+"FUSELAGE."
  603. 3260 N$(1)=M$(6)
  604. 3262 GOSUB 3800
  605. 3264 END
  606. 3300 CLS
  607. 3302 IF WH=10 THEN PRINT M$(1)
  608. 3304 IF WH=12 THEN PRINT"---------- A MINOR CRASH HAS OCCURRED ----------"
  609. 3306 PRINT M$(10)
  610. 3308 PRINT M$(11);AX;"FEET."
  611. 3310 IF WH=10 THE»%ò9QüM$(13)
  612. 3312 IF WH=10 THEN PRINT M$(12)+"╞┘╒1╣"
  613. 3314 IF WH=12 THEN PRINT"THE IMPACT DAMAGED THE LANDING GEAR."
  614. 3316 IF WH=12 THEN PRINT"ALL THE PASSENGERS HAVE BEEN SAFELY EVACUATED."
  615. 3318 N$(1)=M$(6)
  616. 3320 GOSUB 3800
  617. 3322 END
  618. 3350 CLS
  619. 3352 PRINT M$(1)
  620. 3354 PRINT M$(13)
  621. 3356 PRINT"THE AIRCRAFT LANDED ON ITS BELLY, CAUSING MODERATE DAMAGE."
  622. 3358 PRINT"ALL THE PASSENGERS HAVE BEEN SAFELY EVACUATED."
  623. 3360 N$(1)=M$(6)
  624. 3362 GOSUB 3800
  625. 3364 END
  626. 3400 CLS
  627. 3402 PRINT M$(15)
  628. 3404 PRINT M$(14)
  629. 3406 N$(1)=M$(7)
  630. 3408 GOSUB 3800
  631. 3410 END
  632. 3450 CLS
  633. 3452 PRINT M$(15)
  634. 3454 PRINT"YOU FAILED TO EXECUTE A FLARE PRIOR TO TOUCHING DOWN."
  635. 3456 PRINT"THIS IS A VIOLATION OF COMPANY PROCEDURES."
  636. 3458 PRINT M$(16)
  637. 3460 N$(1)=M$(7)
  638. 3462 GOSUB 3800
  639. 3464 END
  640. 3500 CLS
  641. 3502 PRINT M$(15)
  642. 3504 PRINT"YOU ROLLED OFF THE RUNWAY AFTER TOUCHING DOWN."
  643. 3506 PRINT M$(16)
  644. 3508 N$(1)=M$(7)
  645. 3512 GOSUB 3800
  646. 3513 PRINT
  647. 3514 IF XN>-9750 THEN PRINT"YOU ROLLED PAST FAR END OF RUNWAY"
  648. 3516 IF ABS(YN)>100 THEN PRINT"YOU ROLLED THROUGH RUNWAY SIDE BORDERS"
  649. 3518 END
  650. 3550 CLS
  651. 3552 PRINT"----- YOUR MISSED APPROACH SIGNAL IS ACKNOWLEDGED -----"
  652. 3554 PRINT"YOU HAVE FOLLOWED PROPER PROCEDURES."
  653. 3556 END
  654. 3600 CLS
  655. 3602 PRINT"----- YOU HAVE SUCCESSFULLY COMPLETED THE FLIGHT -----"
  656. 3604 PRINT"ALL PROCEDURES WERE PROPERLY EXECUTED."
  657. 3606 N$(1)=M$(7)
  658. 3610 PRINT"CONGRATULATIONS ON A SUCCESSFUL FLIGHT."
  659. 3612 GOSUB 3800
  660. 3613 PRINT
  661. 3614 XN=ABS(XN):JN=FIX(XN+750)
  662. 3615 YN=ABS(YN):YN=FIX(YN)
  663. 3616 PRINT"YOUR AIRCRAFT CAME TO REST AT THE FOLLOWING POSITION:"
  664. 3617 PRINT"     ";JN;"FEET INSIDE THE RUNWAY"
  665. 3618 PRINT"     ";YN;"FEET FROM RUNWAY CENTERLINE"
  666. 3620 END
  667. 3700 REM:SUBROUTINE TO CLEAR LOWER PART OF DISPLAY
  668. 3702 FOR I=9 TO 23
  669. 3704 LOCATE (I+1),1:PRINT SPC(79);
  670. 3706 NEXT I
  671. 3708 RETURN
  672. 3800 REM:LANDING STATISTICS
  673. 3802 PRINT
  674. 3804 PRINT SPACE$(26);N$(1)
  675. 3806 PRINT
  676. 3808 IF RL=0 THEN PRINT RX;N$(2)
  677. 3809 IF RL=1 THEN COLOR 0,7:PRINT RX;N$(2):COLOR 7,0
  678. 3810 PRINT
  679. 3812 IF RW=0 THEN PRINT RY;N$(3)
  680. 3813 IF RW=1 THEN COLOR 0,7:PRINT RY;N$(3):COLOR 7,0
  681. 3814 PRINT
  682. 3816 PRINT"--- SIZE OF RUNWAY IS 10,500 FEET  X  200 FEET ---"
  683. 3818 RETURN
  684. 5085 REM:TIME DELAY PAD
  685. 5090 FOR I=1 TO TQ
  686. 5095 NEXT I
  687. 5099 RETURN
  688. 7050 REM:CONVERT RTC TO TIME OF DAY IN SECONDS ABSOLUTE
  689. 7055 J=7
  690. 7060 FOR I=0 TO 2
  691. 7065 TC$(I)=MID$(TV$,J,2)
  692. 7070 J=J-3
  693. 7075 TC(I)=VAL(TC$(I))
  694. 7080 TD=(3600*TC(2))+(60*TC(1))+TC(0)
  695. 7085 NEXT I
  696. 7090 RETURN
  697. 9000 REM:PLOTS VARIABLE ON REVERSE BACKGROUND
  698. 9005 COLOR 0,7:LOCATE (YP+1),(XP+1)
  699. 9010 PRINT USING F$;V1;
  700. 9015 COLOR 7,0
  701. 9020 RETURN
  702. 9999 END
  703. 10000 REM:BEGIN TAKEOFF MODULE HERE, EH
  704. 10020 CLS:CLEAR 1000:RANDOMIZE 57.2958
  705. 10025 KR=57.2958
  706. 10030 DIM XM(13),WM(13)
  707. 10031 DIM P$(31)
  708. 10035 DATA 37,35,32,30,27,25,22,20,17,15,12,10,7,5
  709. 10040 DATA 6,11,16,21,26,31,36,41,46,51,56,61,66,71
  710. 10041 FOR I=0 TO 28:READ P$(I):NEXT
  711. 10045 FOR I=0 TO 13:READ XM(I):NEXT
  712. 10050 FOR I=0 TO 13:READ WM(I):NEXT
  713. 10055 M$(1)="_":M$(2)="_":M$(3)="_"
  714. 10060 DIM XE(13),WE(13)
  715. 10065 K1=29:K2=23
  716. 10070 FOR I=0 TO 13
  717. 10075 XE(I)=K1:WE(I)=K2
  718. 10080 K1=K1-2:K2=K2+4
  719. 10085 NEXT
  720. 10090 IO=40
  721. 10095 RN=RND(0)
  722. 10100 RS=1:IF RN>.5 THEN RS=-1
  723. 10105 W1=75:IF RS=-1 THEN W1=255
  724. 10110 W2=RND(20):W3=RS*W2
  725. 10115 DIM XL(14),XR(14)
  726. 10120 J=31:K=49
  727. 10125 FOR I=0 TO 14
  728. 10130 XL(I)=J:XR(I)=K
  729. 10135 J=J-2:K=K+2
  730. 10140 NEXT
  731. 10145 DATA FUEL,LBS,%,VHF,MHZ,THRUST,MAX,IDLE,REV
  732. 10150 DATA PITCH," +"," -",DEG,FLAPS,UP,DWN,WHEELS,UP,MID,DOWN
  733. 10155 DATA COMPASS,AIRSPEED,KTS," VERT",SPEED,FPM
  734. 10160 DATA ALTITUDE,FEET,CLOCK,BRAKE,SET,REL
  735. 10170 FOR I=0 TO 31:READ P$(I):NEXT
  736. 10175 DIM S$(25)
  737. 10180 FOR I=1 TO 25:S$(I)=SPACE$(I):NEXT
  738. 10185 FOR I=0 TO 9:F(I)=0:NEXT
  739. 10190 REM:INIT VARIABLES FOR TAKEOFF MODE
  740. 10195 FU=200000!:FP=0:CC=75:ZS=0:RC=0:AL=0
  741. 10200 MZ=107:TR=6:FL=2:FA=0:WH=13:IX=40:HY=9:BR=11:BK=11
  742. 10205 AB=0
  743. 10215 LOCATE 9,18:PRINT"AIR CANADA 312     CLEARED AS FILED"
  744. 10217 PRINT:PRINT
  745. 10218 PRINT"          SURFACE WINDS VARIABLE, GUSTING TO 15."
  746. 10219 PRINT"          MINIMUM CEILING CONDITIONS ARE IN EFFECT."
  747. 10230 PRINT"          SKY CONDITIONS AT 20,000 SCATTERED."
  748. 10235 PRINT"                         AT 30,000 BROKEN."
  749. 10240 PRINT:PRINT
  750. 10245 PRINT"UPON TAKEOFF, MAINTAIN HEADING 075 TO 3000, THEN PROCEED AS FILED."
  751. 10248 PRINT:PRINT:PRINT"        STANDBY FOR TAKEOFF CLEARANCE"
  752. 10255 TQ=7000:GOSUB 11535
  753. 10260 CLS
  754. 10265 LOCATE 11,18:PRINT"AIR CANADA 312":PRINT:PRINT
  755. 10270 PRINT"YOU ARE CLEARED FOR TAKEOFF AT 0800 HOURS"
  756. 10275 TQ=3000:GOSUB 11535
  757. 10280 CLS
  758. 10285 TIME$="07:59:00":KEY OFF:CLS
  759. 10290 TV$=TIME$:GOSUB 11555:TL=TD
  760. 10295 GOSUB 10330
  761. 10300 GOSUB 10410
  762. 10305 GOSUB 10480
  763. 10310 GOSUB 10615
  764. 10315 K$=INKEY$:IF LEN(K$)=0 GOTO 10325
  765. 10320 GOSUB 10790
  766. 10325 GOTO 10945
  767. 10330 REM:DISPLAY PANEL (HEADERS ONLY)
  768. 10335 LOCATE 1,4:PRINT P$(0);S$(4);P$(5);S$(3);P$(9);S$(3);S$(6);S$(3);P$(20)
  769. 10340 LOCATE 11,60:PRINT P$(13);S$(3);P$(16);S$(2);P$(29)
  770. 10345 LOCATE 12,62:PRINT P$(14);S$(6);P$(14);S$(6);P$(30)
  771. 10350 LOCATE 14,62:PRINT P$(15);S$(5);P$(15);S$(5);P$(31)
  772. 10352 IF F(9)=1 THEN RETURN
  773. 10355 LOCATE 2,14:PRINT P$(6);S$(6);P$(10);S$(6)
  774. 10360 LOCATE 2,69:PRINT P$(28)
  775. 10365 LOCATE 3,2:PRINT P$(1);S$(4);P$(2);S$(21);S$(3);S$(13);P$(23)
  776. 10370 LOCATE 4,23:PRINT P$(11);S$(13);P$(21);S$(2);P$(24);S$(2);P$(26)
  777. 10375 LOCATE 5,1:PRINT P$(3)
  778. 10380 LOCATE 6,40:PRINT P$(22);S$(6);P$(25);S$(5);P$(27)
  779. 10385 LOCATE 7,1:PRINT P$(4);S$(10);P$(7);S$(3);P$(12);S$(7)
  780. 10390 LOCATE 8,14:PRINT P$(8)
  781. 10395 FOR Y=1 TO 7:LOCATE (Y+1),13:PRINT CHR$(195):NEXT
  782. 10400 FOR Y=1 TO 3:LOCATE (Y+1),22:PRINT CHR$(195):NEXT
  783. 10405 RETURN
  784. 10410 REM:DISPLAY HORIZONTAL LINE
  785. 10415 IF F(9)=0 GOTO 10430
  786. 10420 LOCATE 10,1:PRINT SPACE$(80);
  787. 10425 IF HY=20 GOTO 10440
  788. 10430 LOCATE (HY+1),1:PRINT STRING$(80,"_")
  789. 10435 RETURN
  790. 10440 OH=9:HY=10
  791. 10445 FOR I=HY TO 22
  792. 10450 LOCATE (OH+1),1:PRINT SPACE$(80);
  793. 10455 LOCATE (I+1),1:PRINT STRING$(80,"_");
  794. 10460 OH=I
  795. 10465 NEXT I
  796. 10470 LOCATE 24,(IO+1):PRINT" ";
  797. 10475 RETURN
  798. 10480 REM:DISPLAY RUNWAY
  799. 10485 IF F(4)=1 GOTO 10525
  800. 10490 S=10:X=29
  801. 10495 FOR Y=10 TO 22
  802. 10500 LOCATE (Y+1),(X+1):PRINT ".";SPACE$(S);" ";SPACE$(S);".";
  803. 10505 X=X-2:S=S+2
  804. 10510 NEXT
  805. 10515 S$=S$(13)
  806. 10520 RETURN
  807. 10525 REM:PRINTS RUNWAY GRAPHICS
  808. 10530 IF N>3 GOTO 10600
  809. 10535 LOCATE (OY+1),(OX+1):PRINT SPACE$(WM);
  810. 10540 LOCATE (NY+1),(NX+1):PRINT MK$;
  811. 10545 OY=NY:OX=NX
  812. 10550 WM=FW
  813. 10555 RETURN
  814. 10560 REM:ENTRY WHEN SHIP IN FINAL ZONE
  815. 10565 LOCATE (OY+1),(OX+1):PRINT SPACE$(WM):IF F(9)=1 THEN RETURN
  816. 10570 FOR I=10 TO NY-1
  817. 10575 LOCATE (I+1),(XE(J)+1):PRINT SPACE$(WE(J))
  818. 10580 NEXT I
  819. 10585 IF N>4 THEN RETURN
  820. 10590 LOCATE (NY+1),(XY+1):PRINT MK$;
  821. 10595 RETURN
  822. 10600 IF F(2)=1 GOTO 10560 ELSE F(2)=1
  823. 10605 FOR I=10 TO 13:LOCATE (I+1),60:PRINT SPACE$(21):NEXT
  824. 10610 GOTO 10560
  825. 10615 REM:DISPLAY INSTRUMENT READINGS
  826. 10618 LOCATE 1,67:COLOR 0,7:PRINT TIME$:COLOR 7,0
  827. 10620 YP=1:XP=0:F$="######":V1=FU:GOSUB 11600
  828. 10625 YP=1:XP=7:F$="###":V1=FP:GOSUB 11600
  829. 10630 YP=1:XP=39:V1=CC:GOSUB 11600
  830. 10635 YP=4:XP=39:V1=ZS:GOSUB 11600
  831. 10640 YP=4:XP=46:F$="######":V1=RC:GOSUB 11600
  832. 10645 YP=4:XP=55:F$="##,###":V1=AL:GOSUB 11600
  833. 10650 YP=5:XP=0:F$="###":V1=MZ:GOSUB 11600
  834. 10655 REM:DISPLAY THRUST
  835. 10660 FOR I=1 TO 7
  836. 10665 LOCATE (I+1),12:PRINT" ";CHR$(195)
  837. 10670 NEXT
  838. 10675 LOCATE (TR+1),12:PRINT">"
  839. 10680 REM:DISPLAY PITCH
  840. 10685 FOR I=1 TO 3:LOCATE (I+1),21:PRINT" ";CHR$(195):NEXT
  841. 10690 LOCATE (FL+1),21:PRINT">"
  842. 10695 F$="+###"
  843. 10700 YP=5:XP=20:V1=FA:GOSUB 11600
  844. 10705 REM:DISPLAY FLAPS
  845. 10710 IF F(2)=1 GOTO 10760
  846. 10715 FOR I=11 TO 13:LOCATE (I+1),60:PRINT" ";CHR$(195):NEXT
  847. 10720 LOCATE (BR+1),60:PRINT">"
  848. 10725 REM:WHEELS
  849. 10730 FOR I=11 TO 13:LOCATE (I+1),68:PRINT" ";CHR$(195):NEXT
  850. 10735 LOCATE (WH+1),68:PRINT">"
  851. 10740 REM:BRAKES
  852. 10745 FOR I=11 TO 13:LOCATE (I+1),76:PRINT" ";CHR$(195):NEXT
  853. 10750 LOCATE (BK+1),76:PRINT">"
  854. 10760 REM:DISPLAY RUNWAY ALIGNMENT INDEX
  855. 10765 IF F(9)=1 THEN RETURN
  856. 10770 LOCATE 24,(IO+1):PRINT" ";
  857. 10775 LOCATE 24,(IX+1):PRINT CHR$(24);
  858. 10780 IO=IX
  859. 10785 RETURN
  860. 10790 REM:POLL KEY SUBROUT
  861. 10795 IF K$="F" THEN KK=1:GOTO 10820
  862. 10800 IF K$="," OR K$="." THEN KK=2:GOTO 10820
  863. 10805 IF K$="B" THEN KK=3:GOTO 10820
  864. 10810 IF K$="U" OR K$="D" THEN KK=4:GOTO 10820
  865. 10815 IF K$="L" THEN KK=5:GOTO 10820
  866. 10817 IF K$="W" THEN KK=6:GOTO 10820
  867. 10818 IF K$="S" THEN KK=7:GOTO 10820
  868. 10820 ON KK GOSUB 10830,10845,10865,10880,10925,10941,10826
  869. 10825 RETURN
  870. 10826 REM:THRUST KEY (DECREASE)
  871. 10827 IF F(7)=1 AND BR=11 THEN TR=4
  872. 10829 RETURN
  873. 10830 REM:THRUST KEY (INCREASE)
  874. 10831 IF F(7)=1 THEN RETURN
  875. 10835 F(1)=1:TR=1:RETURN
  876. 10845 REM:RUDDER KEYS
  877. 10846 IF F(7)=1 THEN RETURN
  878. 10850 IF ZS<=50 THEN RETURN
  879. 10855 IF K$="," THEN CC=CC-1 ELSE CC=CC+1
  880. 10860 RETURN
  881. 10865 REM:BRAKES
  882. 10870 IF F(0)=1 THEN RETURN
  883. 10875 F(0)=1:BK=13:RETURN
  884. 10880 REM:PITCH
  885. 10881 IF F(7)=1 THEN RETURN
  886. 10885 IF ZS<=50 THEN RETURN
  887. 10890 FD=-10:IF K$="U" THEN FD=10
  888. 10895 FA=FA+FD
  889. 10900 IF FA>60 THEN FA=60
  890. 10905 IF FA<-60 THEN FA=-60
  891. 10910 IF FA>0 THEN FL=1:RETURN
  892. 10915 IF FA=0 THEN FL=2:RETURN
  893. 10920 FL=3:RETURN
  894. 10925 REM:FLAPS
  895. 10926 IF F(7)=1 AND WH=11 THEN BR=11:RETURN
  896. 10930 IF F(3)=1 THEN RETURN
  897. 10935 IF F(3)=0 THEN F(3)=1:BR=13:RETURN
  898. 10940 RETURN
  899. 10941 REM:WHEELS
  900. 10942 IF F(7)=1 THEN WH=11
  901. 10944 RETURN
  902. 10945 REM:SITUATION UPDATE ROUTINE
  903. 10950 TV$=TIME$:GOSUB 11555:TJ=TD-TL:TL=TD
  904. 10955 IF F(9)=1 GOTO 12000
  905. 10960 IF F(0)=1 GOTO 10970
  906. 10965 GOSUB 11130:GOTO 10310
  907. 10970 IF F(4)=1 GOTO 10990
  908. 10975 F(4)=1
  909. 10980 XX=0:YY=0
  910. 10985 TD=TD:V0=0:N=1:OY=23:OX=5:WM=71
  911. 10990 REM:
  912. 10995 A=(118-18*TR)*.04028
  913. 11000 GOSUB 11190
  914. 11005 IF AL>0 GOTO 11060
  915. 11010 IF YY>10500 OR ABS(XX)>100 GOTO 11390
  916. 11015 IF FA<=0 GOTO 11100
  917. 11020 IF ZS<150 GOTO 11385
  918. 11025 IF FA>10 GOTO 11385
  919. 11030 IF F(3)=0 GOTO 11100
  920. 11035 AL=25
  921. 11040 GOSUB 11130
  922. 11045 GOSUB 11150
  923. 11050 GOSUB 11300
  924. 11055 GOTO 10305
  925. 11060 F(9)=1
  926. 11065 GOSUB 11130
  927. 11070 GOSUB 11150
  928. 11075 GOSUB 11170
  929. 11080 FOR I=10 TO 22:LOCATE (I+1),1:PRINT SPACE$(80);:NEXT
  930. 11085 HY=20
  931. 11090 GOSUB 10410
  932. 11095 GOTO 11115
  933. 11100 GOSUB 11130
  934. 11105 GOSUB 11300
  935. 11110 GOTO 10305
  936. 11115 REM:NOW DO DEPARTURE PROCEDURES
  937. 11120 GOTO 10310
  938. 11130 REM:UPDATE FUEL
  939. 11135 FU=FU-40*TJ
  940. 11140 FP=FU/3120
  941. 11145 RETURN
  942. 11150 REM:UPDATE RATE OF CLIMB
  943. 11155 RC=ZS*SIN(ABS(FA/57.3))*1.693*60
  944. 11160 IF FA<0 THEN RC=-1*RC
  945. 11165 RETURN
  946. 11170 REM:UPDATE ALT
  947. 11175 AL=AL+TJ*RC/60
  948. 11180 IF AL<=0 THEN AL=0
  949. 11185 RETURN
  950. 11190 REM:EQUATIONS OF MOTION
  951. 11195 T=TJ
  952. 11200 V=V0+A*T
  953. 11205 VB=(V+V0)/2:V0=V
  954. 11210 S=VB*T
  955. 11215 IF TD<(TX+18) GOTO 11235
  956. 11220 TX=TD
  957. 11225 WB=RS*RND(2)
  958. 11230 CC=CC+WB
  959. 11235 DA=(CC-75)/57.3
  960. 11240 DY=S*COS(ABS(DA))
  961. 11245 DX=S*SIN(ABS(DA))
  962. 11250 IF DA<0 THEN DX=-1*DX
  963. 11255 YY=YY+DY
  964. 11260 XX=XX+DX
  965. 11265 ZS=V/1.69278
  966. 11270 IF ZS>20 THEN ZS=ZS+WS
  967. 11275 IX=40+FIX(XX*7/20):IF IX>79 THEN IX=79
  968. 11280 IF IX<0 THEN IX=0
  969. 11285 ZP=FIX(YY-2500*(N-1))
  970. 11290 IF ZP>2500 THEN N=N+1:GOTO 11285
  971. 11295 RETURN
  972. 11300 REM:VARIABLES FOR RUNWAY GRAPHICS
  973. 11305 MP=FIX(10+(13*ZP)/2500)
  974. 11310 IF N>3 GOTO 11350
  975. 11315 NY=MP
  976. 11320 J=NY-10
  977. 11325 NX=XM(J)
  978. 11330 FW=WM(J)
  979. 11335 S$=SPACE$(J)
  980. 11340 MK$=M$(N)+S$(J)+"_"+S$(J)+"_"+S$(J)+"_"+S$(J)+"_"+S$(J)+"_"
  981. 11345 RETURN
  982. 11350 REM:IN ZONE 4-MARKER IS RUNWAY EDGE
  983. 11355 NY=MP
  984. 11360 J=NY-10
  985. 11365 NX=XE(J)
  986. 11370 IF N>4 THEN RETURN
  987. 11375 MK$=STRING$(WE(J),"_")
  988. 11380 RETURN
  989. 11385 AB=1:GOTO 11415
  990. 11390 AB=2:IF YY<10500 GOTO 11415
  991. 11395 FOR I=10 TO 22
  992. 11400 LOCATE (I+1),1:PRINT SPACE$(80);
  993. 11405 NEXT I
  994. 11410 GOTO 11415
  995. 11415 REM:ABORT
  996. 11420 FOR I=10 TO 22
  997. 11425 LOCATE (I+1),1:COLOR 0,7:PRINT SPACE$(80);
  998. 11430 NEXT I
  999. 11435 LOCATE 11,30:PRINT"*** TAKEOFF FAILED ***":PRINT:PRINT
  1000. 11440 ON AB GOSUB 11455,11480
  1001. 11445 LOCATE 20,35:COLOR 7,0:PRINT"END OF PROGRAM";
  1002. 11450 END
  1003. 11455 PRINT"YOU PULLED BACK ON THE STICK AT TOO SLOW A SPEED, OR YOU"
  1004. 11460 PRINT"PULLED BACK THE STICK TOO FAR WHEN AT PROPER SPEED."
  1005. 11465 PRINT"AS A RESULT, THE TAIL OF THE FUSELAGE SCRAPED THE RUNWAY"
  1006. 11470 PRINT"AND THE AIRCRAFT SPUN OUT OF CONTROL."
  1007. 11475 RETURN
  1008. 11480 IF YY>10500 GOTO 11505
  1009. 11485 PRINT"YOU FAILED TO STAY WITHIN THE RUNWAY BOUNDARIES."
  1010. 11490 PRINT"AS A RESULT, YOU VEERED OFF THE RUNWAY AND COLLIDED WITH"
  1011. 11495 PRINT" THE RUNWAY LIGHTS."
  1012. 11500 RETURN
  1013. 11505 PRINT" YOU RAN OUT OF RUNWAY. AS A RESULT, YOU ROLLED INTO THE"
  1014. 11510 PRINT" MARSHLANDS LOCATED";FIX(YY)-10500;"FEET PAST THE END OF THE RUNWAY."
  1015. 11515 IF F(3)=1 THEN RETURN
  1016. 11520 PRINT:PRINT:PRINT" YOU FORGOT TO LOWER THE FLAPS."
  1017. 11525 PRINT" AS A RESULT, THE AIRCRAFT COULD NOT DEVELOP SUFFICIENT LIFT."
  1018. 11530 RETURN
  1019. 11535 REM:TIME DELAY PAD
  1020. 11540 FOR I=1 TO TQ
  1021. 11545 NEXT I
  1022. 11550 RETURN
  1023. 11555 REM:CONVERT RTC TO TIME OF DAY IN SECONDS, ABSOLUTELY
  1024. 11560 J=7
  1025. 11565 FOR I=0 TO 2
  1026. 11570 TC$(I)=MID$(TV$,J,2)
  1027. 11575 J=J-3
  1028. 11580 TC(I)=VAL(TC$(I))
  1029. 11585 TD=(3600*TC(2))+(60*TC(1))+TC(0)
  1030. 11590 NEXT I
  1031. 11595 RETURN
  1032. 11600 REM:PLOTS VARIABLE ON REVERSE BACKGROUND
  1033. 11605 COLOR 0,7:LOCATE (YP+1),(XP+2)
  1034. 11610 PRINT USING F$;V1;
  1035. 11615 COLOR 7,0
  1036. 11620 RETURN
  1037. 12000 REM:DEPARTURE ROUTINE
  1038. 12010 IF F(7)=1 GOTO 12025 ELSE F(7)=1
  1039. 12015 GOSUB 10340
  1040. 12020 F(2)=0
  1041. 12025 IF WH<>11 GOTO 12040 ELSE ZS=ZS+5
  1042. 12030 IF BR<>11 GOTO 12040 ELSE ZS=ZS+5
  1043. 12035 IF TR=4 AND AL>1800 GOTO 24 ELSE GOTO 12090
  1044. 12040 IF AL<1200 GOTO 12090
  1045. 12042 LOCATE 13,1:PRINT"******** FLIGHT ABORTED **********"
  1046. 12044 PRINT:PRINT
  1047. 12046 PRINT"YOU FAILED TO PERFORM CRUCIAL TRIM MANOUVERS FOLLOWING LIFTOFF."
  1048. 12048 PRINT" THE PROPER TRIM SEQUENCE, WHICH MUST BE COMPLETED BELOW 1200 FEET, IS AS FOLLOWS:"
  1049. 12050 PRINT"   1-RAISE LANDING GEAR"
  1050. 12054 PRINT"   3-REDUCE THRUST"
  1051. 12055 PRINT"   2-RETRACT FLAPS"
  1052. 12056 PRINT
  1053. 12058 PRINT"--------------- END OF PROGRAM --------------"
  1054. 12060 END
  1055. 12090 GOSUB 11130
  1056. 12092 GOSUB 11150
  1057. 12094 GOSUB 11170
  1058. 12099 GOTO 10310
  1059. 13000 REM:END OF LISTING
  1060.